/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


function incrementa (elemento, maximo) {
    elemento.value++;
    verificaIntervalo (elemento, Number.MIN_VALUE, maximo);
}

function decrementa (elemento, minimo) {
    elemento.value--;
    verificaIntervalo (elemento, minimo, Number.MAX_VALUE);
}

function verificaIntervalo (elemento, min, max) {
    while (isNaN(elemento.value)) {
        elemento.value = String(elemento.value.slice(0, -1));
    }
    if (elemento.value.length == 0) {
        elemento.value = min;
    }
    elemento.value = Number(elemento.value);
    if (elemento.value > max) {
        elemento.value = max;
    } else if (elemento.value < min) {
        elemento.value = min;
    }

    atualizaOrdem(document.getElementById('ordem_de_gols'),
                  document.getElementById('gols_time_a').value,
                  document.getElementById('gols_time_b').value);
    escreveGols(document.getElementById('ordem_de_gols'), document.getElementById('placar_final'), document.getElementById('placar_parcial'));
}

function atualizaOrdem (elemento, golsA, golsB) {

    if (elemento.options.length == 0) {
        adicionar(elemento, '---FIM DO PRIMEIRO TEMPO---', 'C');
    }

    var diffA = golsA - contaGols(elemento, 'A');
    var diffB = golsB - contaGols(elemento, 'B');

    var timeA = document.getElementById('nome_time_a').textContent;
    var timeB = document.getElementById('nome_time_b').textContent;

    while (diffA > 0) { //gols de menos
        adicionar(elemento, timeA, 'A');
        diffA--;
    }

    while (diffA < 0) { //gols a mais
        removeBaixoParaCima(elemento, 'A');
        diffA++;
    }

    while (diffB > 0) { //gols de menos
        adicionar(elemento, timeB, 'B');
        diffB--;
    }

    while (diffB < 0) { //gols a mais
        removeBaixoParaCima(elemento, 'B');
        diffB++;
    }

}

function removeBaixoParaCima (elemento, valor) {
    var selLength = elemento.length;
    for(var i=selLength-1; i>=0; i--) {
        if (elemento.options[i].value == valor) {
            remover(elemento, i);
            break;
        }
    }
}

function contaGols (elemento, valor) {
    var selLength = elemento.length;
    var resultado = 0
    for(var i=0; i<selLength; i++) {
        if (elemento.options[i].value == valor) {
            resultado++;
        }
    }
    return resultado;
}

function remover(theSel, theIndex) {
	var selLength = theSel.length;
	if(selLength>0) theSel.options[theIndex] = null;
}

function adicionar(elemento, texto, valor) {
    var newOpt = new Option(texto,valor);
    var selLength = elemento.length;
    elemento.options[selLength] = newOpt;
}

function descerGol (elemento) {
    move(elemento, elemento.selectedIndex, +1);
    escreveGols(document.getElementById('ordem_de_gols'), document.getElementById('placar_final'), document.getElementById('placar_parcial'));
}

function subirGol (elemento) {
    move(elemento, elemento.selectedIndex, -1);
    escreveGols(document.getElementById('ordem_de_gols'), document.getElementById('placar_final'), document.getElementById('placar_parcial'));
}

function escreveGols(selecao, sequencia, parcial){
    var selLength = selecao.length;
    var str = '';
    for(var i=0; i<selLength; i++) {
        str = str+selecao.options[i].value;
    }
    parcial.value = str.substring(0, str.indexOf('C'));
    if(str == '') str = null;
    sequencia.value = str;
}

function atualizaGols(){

    selecao = document.getElementById('ordem_de_gols');
    sequencia = document.getElementById('placar_final');

    if (sequencia.value.length == 0) {
        atualizaOrdem(selecao, 0, 0);
        escreveGols(selecao, sequencia, document.getElementById('placar_parcial'));
    } else {
        var tamanho = sequencia.value.length;
        var timeA = document.getElementById('nome_time_a').textContent;
        var timeB = document.getElementById('nome_time_b').textContent;
        for(var i=0; i<tamanho; i++) {
            if(sequencia.value.charAt(i) == 'A') adicionar(selecao, timeA, 'A');
            if(sequencia.value.charAt(i) == 'B') adicionar(selecao, timeB, 'B');
            if(sequencia.value.charAt(i) == 'C') adicionar(selecao, '---FIM DO PRIMEIRO TEMPO---', 'C');
        }
    }
}

window.onload = atualizaGols;

